package com.swanclouds.model.event;

import com.swanclouds.model.DeviceEntity;
import com.swanclouds.redfish.common.redfish.Status;
import java.util.List;
import java.util.Map;

/**
 * @author 李文强
 * description
 */
public interface Event extends DeviceEntity {

    /**
     * 事件资源服务模型的电子标签
     * @return String
     */
    String getEtag();

    /**
     * 事件资源服务模型的id
     * @return String
     */
    String getDataId();

    /**
     * 事件资源服务模型的类型
     * @return String
     */
    String getType();

    /**
     * 事件订阅发送失败最大尝试次数
     * @return 发送任何给定事件的重试尝试之间的秒数
     */
    Integer getDeliveryRetryAttempts();

    /**
     * 发送任何给定事件的重试尝试之间的秒数
     * @return Integer
     */
    Integer getDeliveryRetryIntervalSeconds();

    /**
     * 事件服务资源的描述信息
     * @return String
     */
    String getDescription();

    /**
     * 指可以订阅的事件的类型，取值为以下合法的
     * 组合：
     * StatusChange：资源状态改变事件
     *  ResourceUpdated：资
     * 源更新事件
     *  ResourceAdded：资源
     * 添加事件
     *  ResourceRemoved：资源移除事件
     * Alert：告警事件
     * @return java.util.List
     */
    List<String> getEventTypesForSubscription();

    /**
     * 事件服务资源的id
     * @return String
     */
    String getId();

    /**
     * 事件服务资源的名称
     * @return String
     */
    String getName();

    /**
     * 事件服务使能状态
     * @return Boolean
     */
    Boolean getServiceEnabled();

    /**
     * State: 事件服务资源的使能状态
     * Health: 事件服务资源的健康状态
     * @return java.util.List
     */
    List<Status> getStatus();

    /**
     * 目标资源的集合的导航资源
     * @return Java.util.List
     */
    List<Map<String,Object>>getSubscriptions();


    /**
     * 事件服务资源的可操作资源属性
     * @return Java.util.Map
     */
    Map<String,Object> getAction();
}
